package com.unitd.modules.sys.entity;

import com.unitd.comm.entity.SysEntity;
import javax.persistence.*;
import java.util.List;

/**
 * @desc 角色表
 * @filename SysRole.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0 
 * @date 2017-04-26
 */ 
@Table(name = "sys_role")
public class SysRole extends SysEntity {

	/** 上级角色(角色组) */
	@Column(name = "parent_id")
	private Long parentId;
	/** 角色名称 */
	private String name;
	/** 角色类型(0:超级管理员;1:管理员;2:普通用户) */
	@Column(name = "role_type")
	private String roleType;
	/** 是否可用(0:可用; 1:不可用) */
	private Short state;
	/** 排序 */
	private Long sort;

	/********* 与数据存储无关,但展示或其他关联时需要用的属性 *********/
	/** 父角色名称 */
	@Transient
	private String parentName;

	/********* 与数据存储无关,但展示或其他关联时需要用的属性 *********/
	@Transient
	private List<Long> menuIdList;

	/**
	 * @desc 构造方法 SysRole
	 */
	public SysRole(String id, Long parentId, String name, String roleType, Short state, Long sort, String createBy, java.util.Date createDate, String updateBy, java.util.Date updateDate, String remarks, String delFlag) {
		this.id = id;
		this.parentId = parentId;
		this.name = name;
		this.roleType = roleType;
		this.state = state;
		this.sort = sort;
		this.createBy = createBy;
		this.createDate = createDate;
		this.updateBy = updateBy;
		this.updateDate = updateDate;
		this.remarks = remarks;
		this.delFlag = delFlag;
	}
	/**
	 * @desc 构造方法 SysRole
	 */
	public SysRole(String roleType) {
		super();
		this.roleType = roleType;
	}

	/**
	 * @desc 构造方法 SysRole
	 */
	public SysRole() {
		super();
	}

	/**
	 * @desc 获取上级角色(角色组)
	 * @return parent_id - 上级角色(角色组)
	 */
	public Long getParentId() {
		return parentId;
	}

	/**
	 * @desc 设置上级角色(角色组)
	 * @param parentId 上级角色(角色组)
	 */
	public void setParentId(Long parentId) {
		this.parentId = parentId;
	}

	/**
	 * @desc 获取角色名称
	 * @return name - 角色名称
	 */
	public String getName() {
		return name;
	}

	/**
	 * @desc 设置角色名称
	 * @param name 角色名称
	 */
	public void setName(String name) {
		this.name = name == null ? null : name.trim();
	}

	/**
	 * @desc 获取角色类型(0:超级管理员;1:管理员;2:普通用户)
	 * @return role_type - 角色类型(0:超级管理员;1:管理员;2:普通用户)
	 */
	public String getRoleType() {
		return roleType;
	}

	/**
	 * @desc 设置角色类型(0:超级管理员;1:管理员;2:普通用户)
	 * @param roleType 角色类型(0:超级管理员;1:管理员;2:普通用户)
	 */
	public void setRoleType(String roleType) {
		this.roleType = roleType == null ? null : roleType.trim();
	}

	/**
	 * @desc 获取是否可用(0:可用; 1:不可用)
	 * @return state - 是否可用(0:可用; 1:不可用)
	 */
	public Short getState() {
		return state;
	}

	/**
	 * @desc 设置是否可用(0:可用; 1:不可用)
	 * @param state 是否可用(0:可用; 1:不可用)
	 */
	public void setState(Short state) {
		this.state = state;
	}

	/**
	 * @desc 获取排序
	 * @return sort - 排序
	 */
	public Long getSort() {
		return sort;
	}

	/**
	 * @desc 设置排序
	 * @param sort 排序
	 */
	public void setSort(Long sort) {
		this.sort = sort;
	}

	public List<Long> getMenuIdList() {
		return menuIdList;
	}

	public void setMenuIdList(List<Long> menuIdList) {
		this.menuIdList = menuIdList;
	}

	public String getParentName() {
		return parentName;
	}

	public void setParentName(String parentName) {
		this.parentName = parentName;
	}
}